package org.example.lesson02;

import java.io.*;
import java.util.Scanner;

public class les02_Demo_test2 {
    public static void main(String[] args) throws IOException {
        //1.用户输入一个源文件的路径
        System.out.println("请输入一个源文件路径：");
        Scanner in=new Scanner(System.in);
        String rootFile=in.next();
        File rootPath = new File(rootFile);
        //2.校验源文件是否符合要求
        //源文件是否存在
        if(!rootPath.exists()){
            System.out.println("源文件不存在.");
            return;
        }
        if(!rootPath.isFile()){
            System.out.println("源文件不是普通文件.");
            return;
        }
        //3.用户输入一个目标路径
        System.out.println("请输入目标文件:");
        String goalFile=in.next();
        File goalPath = new File(goalFile);
        //关闭Scanner
        //4.校验目标文件是否正确
        //是否已存在
        if(goalPath.exists()){
            System.out.println("输入的目标文件已经存在,请重新输入.");
            return;
        }
        //父目录是否存在
        if(!goalPath.getParentFile().exists()){
            System.out.println("输入的目标文件父目录不存在,请重新输入.");
            return;
        }
        //5.读取源文件的内容
        //实现读写操作，定义输入流和输出流
//        FileInputStream inputStream = new FileInputStream(rootPath);
//        FileOutputStream outputStream = new FileOutputStream(goalPath);
//        inputStream.close();
//        outputStream.close();
        try(InputStream inputStream = new FileInputStream(rootPath);
            OutputStream outputStream = new FileOutputStream(goalPath)){
            //定义一个数组
            byte[] bytes=new byte[1024];
            //循环读取源文件
            while(true){
                //读取
                int len=inputStream.read(bytes);
                if(len==-1){
                    break;
                }
                //把读到的内容写入目标文件
                outputStream.write(bytes,0,len);
            }
            //强制刷新缓冲区
            outputStream.flush();
            //打印
            System.out.println("复制成功："+rootPath+"--->"+goalPath);
        }
    }
}
